/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.tramite.be;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.cip.esymons.general.be.Area;
import org.cip.esymons.tesoreria.be.ExoneracionDescuento;

/**
 *
 * @author Cristian
 */
@Entity
@Table(name = "tra_documento_generado")
@DiscriminatorValue("GEN")
public class DocumentoGenerado extends Documento implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Column(name = "doc_asunto")
    private String docAsunto;
    @Column(name = "doc_observacion")
    private String docObservacion;
    @Column(name = "doc_estado")
    private String docEstado;
    @Lob
    @Column(name = "doc_contenido")
    private String docContenido;
    @Transient
    private Area area;
    @OneToMany(mappedBy = "fkDocCodigodge", fetch = FetchType.LAZY)
    private List<ExoneracionDescuento> exoneracionDescuentoList;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "documentoGenerado", fetch = FetchType.LAZY)
    private Certificado certificado;    

    public DocumentoGenerado() {
    }

    public DocumentoGenerado(Long docCodigo) {
        this.docCodigo = docCodigo;
    }

    public DocumentoGenerado(Long docCodigo, String docAsunto, String docEstado) {
        this.docCodigo = docCodigo;
        this.docAsunto = docAsunto;
        this.docEstado = docEstado;
    }

    public String getDocAsunto() {
        return docAsunto;
    }

    public void setDocAsunto(String docAsunto) {
        this.docAsunto = docAsunto;
    }

    public String getDocObservacion() {
        return docObservacion;
    }

    public void setDocObservacion(String docObservacion) {
        this.docObservacion = docObservacion;
    }

    public String getDocEstado() {
        return docEstado;
    }

    public void setDocEstado(String docEstado) {
        this.docEstado = docEstado;
    }

    public String getDocContenido() {
        return docContenido;
    }

    public void setDocContenido(String docContenido) {
        this.docContenido = docContenido;
    }

    public List<ExoneracionDescuento> getExoneracionDescuentoList() {
        return exoneracionDescuentoList;
    }

    public void setExoneracionDescuentoList(List<ExoneracionDescuento> exoneracionDescuentoList) {
        this.exoneracionDescuentoList = exoneracionDescuentoList;
    }

    public Certificado getCertificado() {
        return certificado;
    }

    public void setCertificado(Certificado certificado) {
        this.certificado = certificado;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (docCodigo != null ? docCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DocumentoGenerado)) {
            return false;
        }
        DocumentoGenerado other = (DocumentoGenerado) object;
        if ((this.docCodigo == null && other.docCodigo != null) || (this.docCodigo != null && !this.docCodigo.equals(other.docCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.tramite.be.DocumentoGenerado[docCodigo=" + docCodigo + "]";
    }

    public Area getArea() {
        return area;
    }

    public void setArea(Area area) {
        this.area = area;
    }

}
